/**************************************************************************
*   Copyleft 2009 by        											  *
*	Iwanicki Krzysztof													  *
*   <www.gamma.mini.pw.edu.pl/~iwanickik>		                          *
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU General Public License as published by  *
*   the Free Software Foundation; either version 2 of the License, or     *
*   (at your option) any later version.                                   *
*                                                                         *
*   This program is distributed in the hope that it will be useful,       *
*   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
*   GNU General Public License for more details.                          *
***************************************************************************/
#ifndef __VGLVERTEXBUFFERMANAGER_H__
#define __VGLVERTEXBUFFERMANAGER_H__

#include "./vVertexBufferManager.h"
#include "../../Macros/vMemoryMacros.h"

namespace Vendetta {

	/*! \class vGlVertexBufferManager
	 *  \brief A vGlVertexBufferManager class implements manager for GL Api.
	 *
	 */
	class vGlVertexBufferManager: public vVertexBufferManager {
		friend class vApi;
		friend class vGlApi;
	protected:
		vVertexBuffer* apiNewVertexBuffer(vUInt uiSize, vUInt32 ui32Format, 
			vVertexBuffer::eVertexBufferPrimitiveType ePrimitiveType = vVertexBuffer::VVBPT_TRIANGLES,
			vVertexBufferManager::eVertexBufferType eType = vVertexBufferManager::VVBT_SOFTWARE,
			vVertexBuffer::eVertexBufferUsage eUsage = vVertexBuffer::VVBU_DYNAMIC);
	
	private:
		/*! \brief Default constructor.
		 *	
		 *	\sa		Vendetta::vVertexBufferManager.
		 */	
		vGlVertexBufferManager();
	
		/*! \brief Destructor.
		 *
		 */	
		virtual ~vGlVertexBufferManager();

		//! Disabled - if You call this You get exception.
		vGlVertexBufferManager(const vGlVertexBufferManager& buffer);
		//! Disabled - if You call this You get exception.
		vGlVertexBufferManager& operator=(const vGlVertexBufferManager& buffer);
	
	};
}

#endif // __VGLVERTEXBUFFERMANAGER_H__